# 创建集合对象
"""x = {"hello",1,"good"}
print(x) # 打印出来的时候，顺序会乱
# 因为集合无序"""

# 集合不允许重复，即使有重复的对象，返回只有一次
"""a = {10,20,30,40,50,50,30,20,10}
print(a) # {50, 20, 40, 10, 30}"""

# 使用set来去创建集合对象
"""x1 = set()
print(x1) # set() ，空集合就是这个样子的"""

# 集合的增删改查
# 集合新增的方法：.add，新增
a = {10,20,30,40,50,50,30,20,10}
"""a.add("好健康") # 使用add方法进行新增
print(a)"""

# 集合删除的方法：.remove,删除具体的值
"""a.remove(50) # 把集合中的50删除
print(a)
a.remove("好健康") # KeyError: '好健康',删除不存在的会报错"""
# 集合删除的方法：pop，随机删除一个值
"""a.pop()
print(a)"""

# 清空集合的方法：clear
"""a.clear()
print(a) # set()"""

# todo:修改集合的方法，union，合并集合的方法
"""b = {10,20,30,40,10,10,20,30,40}
print(b)
c = b.union({10,20,30,"沈腾","马丽","艾伦","袁华"})
print(c)"""

# todo:新集合和旧集合合并到一起：update  可以和非集合对象合并，但必须是可迭代的
"""a = {10,20,30,40,50}
a.update([23,44,55]) # 可以和非集合对象合并，但必须是可迭代的
a.update("123456")
a.update((11,22,"asd","asdq"))
a.update({11,"qwe1","qwe2"})
print(a)"""
"""
可迭代的：
字符串
列表
元组
集合
"""

# todo：集合里运算符的使用
aa1 = {'安其拉','李白','澜','镜','露娜','孙少香','鲁班大师','廉颇'}
bb1 = {'夏洛特','镜','安其拉','李白','关羽','孙少香'}
# 差集： 两个集合中不一样的内容就是差集
# 集合支持 很多算术运算符
# todo：差集
"""print(aa1 - bb1) # 返回A   {'澜', '露娜', '鲁班大师', '廉颇'}
print(bb1 - aa1)   #  返回B  {'夏洛特', '关羽'}"""

# 交集
# print(aa1 & bb1) # {'李白', '孙少香', '安其拉', '镜'}

# todo:并集
# print(aa1 | bb1) # {'关羽', '李白', '安其拉', '夏洛特', '廉颇', '露娜', '鲁班大师', '镜', '孙少香', '澜'}

# 差集的并集
print(aa1 ^ bb1) # aa1 和 bb1  差集的并集  {'露娜', '鲁班大师', '澜', '廉颇', '关羽', '夏洛特'}


"""
集合的总结：
1、集合是无序的，没有序列
2、集合里面的内容不允许重复
3、集合不支持索引：切片访问，索引访问都是不OK的
"""